package com.example.demo.controller;

import com.example.demo.component.UserComponent;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

// 必须要有该注解 不然就会报错，说没有HelloController这个类型的对象
@Controller
public class HelloController {

    // 属性注入 要注入什么类型的对象就要在这个属性前写 @Autowired 注解
//    @Autowired
//    private UserService us;
//    @Autowired
//    private UserComponent uc;


    // 构造方法注入
    // 只有一个构造函数的时候，并且这个构造函数包含所有的属性
//    private UserService us;
//    private UserComponent uc;
//    @Autowired
//    private HelloController(UserService us,UserComponent uc){
//        this.us = us;
//        this.uc = uc;
//    }
//
//    // 当有无参的构造函数的时候，就会报错，这个时候需要指定构造函数，所以给上面的构造函数加上@Autowired注解
//    private HelloController(){}
//    // 同理有其他的构造函数的时候也是会报错的，也需要加上注解
//    private HelloController(UserService us){
//        this.us = us;
//    }

    // set 方法注入
    // 必须要给set方法加上 @Autowired 方法
    private UserService us;
    private  UserComponent uc;

    @Autowired
    public void setUs(UserService us) {
        this.us = us;
    }
    @Autowired
    public void setUc(UserComponent uc) {
        this.uc = uc;
    }

    public void print(){
        us.print();
        uc.print();
        System.out.println("HelloController ...");
    }
}
